	// 用于发送ajax
			function ajax(opts){
				let xhr;
				if(window.XMLHttpRequest){
					 xhr = new XMLHttpRequest();
				}else{
					 xhr = new ActiveXObject();
				}
				
				// es5的写法
				// let method = opts.method;
				// let url = opts.url;
				// let async = opts.async;
				// ES6写法 
				// 解构对象里的参数 且 给默认值 ；
				let {method="get",url="",async=true,data={},success=function(){},dataType="text"} = opts;
				
				// 判断如果是一个get请求 那么内部就需要把data里的参数拼接到url上 
				if(method.toLocaleLowerCase()=="get"){
					// url?name=zhangsan&age=20
					// 把对象 {name:"zhangsan",age:20}  转成  name=zhangsan&age=20字符串
					url = url + "?" + o2s(data);
				}
				
				// method:get  ,url:"请求地址",async:true
				xhr.open(method,url,async);
				
				// 判断如果是post请求 需要带上请求头部 
				if(method.toLocaleLowerCase()=="post"){
					xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded")
				}
				
				
				
				xhr.onload = function(){
					// ajax 获取成功之后的位置 ,这个地方是异步的； 
					// 如果ajax 发送或者请求成功就调用外部的success函数
					if(dataType=="json"){
						success( JSON.parse( xhr.responseText));
					}else{
						success(xhr.responseText);
					}
					
					
				}
				
				if(method.toLocaleLowerCase()=="get"){
						xhr.send();
				}else{
					// 如果是post请求 那么需要发送post的数据
					// name=zhangsan&age=21
					xhr.send(o2s(data));
				}
			
				
				
				// 是ajax函数的子函数
				// 定义函数 可以把对象转换成字符串；
				function o2s(obj){
					let arr = [];
					for(let key in obj){
						// console.log(obj[key]);
						let str = key + "=" + obj[key];
						// console.log(str);
						arr.push(str);
					}
					let purl = arr.join("&");
					return purl;
				}
				
			}